home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 52 / Amiga Format AFCD52 (Issue 136, May 2000).iso / -in_the_mag- / banging_the_metal / qdos / qdos4amiga1 / docs / amiga-qdos.doc next >
Text File  |  2000-01-03  |  60KB  |  1,832 lines

  1.   ____      _  _     _   ____    ____       ____   ____      ____      ____
  2.  / __ \  / \/ \ | | / ___|  / __ \      / __ \ |  _ \  / __ \  / ___|
  3. | |__| ||      || || |     _ | |__| |  __  | |  | || | \ \| |  | | \_ \
  4. |  __  || |\/| || || |__| ||  __  | |__| | |_/    \| |_/ /| |__| | __\ \
  5. |_|  |_||_|  |_||_| \____/ |_|    |_|      \___/\/|____/  \____/ |____/
  6.  
  7. S O F T W A R E   Q D O S   E M U L A T O R   F O R   T H E   A M I G A
  8.  
  9. --------------------------------------------------------------------------
  10.  
  11. ›1m›4mQUICK OVERVIEW›0m
  12.  
  13. This is a major reworking of Rainer Kowallik's QL emulator for the
  14. Amiga. Most of the new features have been added by Mark J Swift
  15. (e-mail: msw@blackpool.ac.uk) - Rainer is no-longer involved in
  16. the project. The release includes full assembler source and a QDOS
  17. utilities disk.
  18.  
  19. --------------------------------------------------------------------------
  20.  
  21. ›1m›4mVERSION 3.24 ARCHIVE CONTENTS›0m
  22.  
  23. 'QDOS4amiga1.lha'  QL clone v3.24 (binaries and documentation)
  24.  
  25. 'QDOS4amiga2.lha'  QL clone v3.24 (assembly source)
  26.  
  27. 'QDOS4amiga3.zip'  QL clone v3.24 (QDOS support disk)
  28.            Format a QL (QDOS) disk and copy the contents of this
  29.            archive onto it to create a BOOTable QDOS support disk
  30.            for the Sinclair QL emulator.
  31.  
  32. --------------------------------------------------------------------------
  33.  
  34. ›1m›4mAMIGA-QDOS v3.24 FEATURES›0m
  35.  
  36. *  FASTER than the original QL
  37. *  LOADS/SAVES to QL floppy disks
  38. *  Hard disk support via QubIDE ROM
  39. *  SOUND supported in full (all possible convolutions of BEEP)
  40. *  SYSTEM VARIABLES movable (even into FAST RAM).
  41. *  2ND-SCREEN fully usable (like MINERVA ROM)
  42. *  SCREEN modes 4 and 8 BOTH supported
  43. *  KEYBOARD history from standard <ALT><ENTER> combination
  44. *  ALL known machines supported A500, A500+, A600, A1200, A4000 etc
  45. *  FOR COMPATIBILITY, data and instruction caches can be enabled/disabled
  46. *  QDOS support disk included with release
  47. *  BASED ON a JS ROM with many JS ROM bug fixes.
  48. *  SOURCE included
  49.  
  50. --------------------------------------------------------------------------
  51.  
  52. ›1m›4mWHAT'S NEW IN VERSION 3.24›0m
  53.  
  54. *  QDOS ROM relocatable into FAST RAM
  55. *  Hard disk support via QubIDE ROM
  56. *  some bug fixes
  57.  
  58. --------------------------------------------------------------------------
  59.  
  60. ›1m›4mTHE SINCLAIR QL...›0m
  61.  
  62.       ,--------------------------------------------/|/|/|/|/|/|/|/|/|/|/|
  63.      / /_//_//_//_//_//_//_//_//_//_//_//_//_//_/ /            /|
  64.     / /_//__//_//_//_//_//_//_//_//_//_//_//_/ / /               / /
  65.    / /_//____//_//_//_//_//_//_//_//_//_//____/ /              / /
  66.   / /_//__//_//_//_________________//_//_//__/ /_____________________/ /
  67.  /_'__________________________________________/|__.======  .====== __|/
  68. |_____________________________________________:======================/
  69.   |________________________________________________________________|/
  70.  
  71. The Sinclair QL is a black slab-like computer based around Motorola's
  72. 68008 micro-processor. The QL was launched as the follow-up to the
  73. ZX Spectrum, aimed at the business market rather than the games market
  74. and was supplied with wordprocessor, spreadsheet, database and charting
  75. programs. It features a fully multi-tasking operating system (QDOS)
  76. and a very good built-in BASIC. The QL failed to achieve the mass-market
  77. appeal of its predecessor, but nevertheless attracted a large dedicated
  78. user base... which is still going strong.
  79.  
  80. --------------------------------------------------------------------------
  81.  
  82. ›1m›4mQUICK START›0m
  83.  
  84. ›1mINSTALLING THE EMULATOR›0m
  85.  
  86. 1. Create a directory on your destination volume for the Amiga-QDOS
  87.    binaries and documentation.
  88.  
  89. 2. Make an assignment to this directory as "QLBOOT:". Consider making
  90.    the same assignment in your start-up sequence.
  91.  
  92. 3. Copy the contents of the archive QDOS4amiga1.lha to QLBOOT:
  93.  
  94. 4. Move the contents of QLBOOT:c to your own 'c' directory.
  95.  
  96. ›1mCREATING THE QDOS SUPPORT DISK›0m
  97.  
  98. Creating the QDOS support disk on an Amiga requires that the xfs
  99. filesystem is mounted. XFS allows access to a multitude of disk
  100. formats including QL (QDOS) disks. XFS is can be found on the aminet
  101. in disk/misc.
  102.  
  103. 1. Mount the xfsd filesystem.
  104.  
  105. 2. Copy QDOS4amiga3.lha to RAM: - or into the same directory
  106.    as 'QLdisk.unLHA'.
  107.  
  108. 3. Double-click on the 'QLdisk.unLHA' icon.
  109.    Insert a blank disk into DF0: at the appropriate moment... then wait.
  110.    Rename the resultant QDOS (QL) disk as 'QLutils:'
  111.  
  112. Alternatively you could follow the instructions in the file
  113. 'QDOS4amiga3.readme' which explains how to create the disk from a CLI.
  114.  
  115. ›1mSTARTING THE EMULATOR›0m
  116.  
  117. 1. Double-click on the 'Start_QDOS_UK' icon.
  118.  
  119. 2. Insert QLutils: into DF0: and at the F1/F2 prompt and press F1.
  120.  
  121. --------------------------------------------------------------------------
  122.  
  123. ›1m›4mA QUICK TOUR OF THE QL›0m
  124.  
  125. When you first switch on a QL (or when you run the emulator) you are
  126. presented with a screen requiring you to press F1 or F2.
  127.  
  128. On an actual QL, pressing F2 initialises the 3 standard windows (BASICs
  129. #0, #1 and #2) such that they do not lie off the side of the screen when
  130. viewed on a PAL TV. Since the video on the Amiga is very much compressed
  131. relative to the QL, it is always best to choose the monitor setting - F1,
  132. on the emulator.
  133.  
  134. Upon pressing F1 or F2, the system will attempt to load and run a file
  135. called 'BOOT' from the disk inserted in the internal drive (FLP1_). With
  136. the QDOS QLutils: disk inserted, a BASIC BOOT program will run that loads
  137. a number of toolkits and installs a small RAM disk.
  138.  
  139. In any case, you will eventually be presented with a flashing cursor. This
  140. is your bog-standard home-computer flashing-cursor, waiting for a NEW
  141. program to be typed-in and RUN, or LOADed from floppy disk.
  142.  
  143.    For example, if you type in the following:
  144.  
  145.     ›3mNEW›0m
  146.     ›3m10 PRINT "Hello World!"›0m
  147.     ›3mRUN›0m
  148.  
  149.    ...the words 'Hello World!' are printed on screen.
  150.    If you add the following:
  151.  
  152.     ›3m20 GOTO 10›0m
  153.     ›3mRUN›0m
  154.  
  155.    ...then the same words will be repeatedly printed until you BREAK the
  156.    program with the keys <CTRL><SPACE>.
  157.  
  158.    You can save the program to the disk in the internal drive with the
  159.    command:
  160.  
  161.     ›3mSAVE FLP1_HELLOWORLD_bas›0m
  162.  
  163.    or, if there is no room on disk, you can FORMAT a new disk with the
  164.    command:
  165.  
  166.     ›3mFORMAT FLP1_WORKDISK›0m
  167.  
  168.    ...which formats the disk in the internal drive and gives it the name
  169.    'WORKDISK'. Remember there is no going back once a disk is formatted.
  170.  
  171.    To list the contents of the internal floppy drive type:
  172.  
  173.     ›3mDIR FLP1_›0m
  174.  
  175.    Loading a BASIC program from floppy disk is a simple matter:
  176.  
  177.     ›3mLOAD FLP1_PLAY_MUSIC_bas›0m
  178.  
  179.    You can then type:
  180.  
  181.     ›3mLIST›0m
  182.  
  183.    ...to see the BASIC listing, or:
  184.  
  185.     ›3mRUN›0m
  186.  
  187.    ...to execute the BASIC program.
  188.  
  189.    To execute a machine code task, use the EXEC_W keyword.
  190.    For example:
  191.  
  192.     ›3mEXEC_W FLP1_XCHANGE›0m
  193.  
  194.    ...will load and execute the stated program from the disk in the
  195.    internal drive. At the same time it will suspend BASIC ( _W = wait ).
  196.    To multi-task, use EXEC and press CTRL-C to task switch.
  197.  
  198. --------------------------------------------------------------------------
  199.  
  200. ›1m›4mCUSTOM STARTUP›0m
  201.  
  202. The default 'Start_QDOS' icons are configured to make best-use of your
  203. machines' RAM. For example on a QDOS will automatically be loaded into
  204. FAST RAM (if available) which is significantly faster than CHIP. In some
  205. cases however it may be that you want to force a particular configuration.
  206. For example Running QDOS from CHIP makes for a significantly more QL-like
  207. (and hence QL compatible) environment than running from FAST RAM.
  208.  
  209. The directories CUSTOM_UK and CUSTOM_DT contain customised start-up icons
  210. for different machine configurations.
  211.  
  212. ›3mQDOS_128K›0m
  213.  
  214. This icon gives you a memory configuration similar to the original
  215. unexpanded 128K QL.
  216.  
  217. ›3mCHIP_ONLY›0m
  218.  
  219. Run QDOS from CHIP memory, and ignore all memory expansions.
  220.  
  221. ›3mCHIP+2ndSCRN›0m
  222.  
  223. Run QDOS from CHIP memory and install a second screen similar to the
  224. Minerva one.
  225.  
  226. ›3mA500_RANGER_ONLY›0m
  227.  
  228. For A500s only. Ignore all other memory ranges and run QDOS from RANGER
  229. memory (address $C00000 onwards). A memory board fitted in the trap-door
  230. beneath the machine gives you this type of memory.
  231.  
  232. ›3mA500_FAST_ONLY›0m
  233.  
  234. For A500s only. Ignore all other memory ranges and run QDOS from EXPANSION
  235. memory (address $200000 onwards). Some A500 peripherals that fit to the
  236. expansion port on the left of the machine give you this type of memory.
  237.  
  238. ›1mCREATING YOUR OWN CUSTOM START-UP ICON›0m
  239.  
  240. If none of the provided custom start-up icons reflect the set-up you
  241. require for your machine, it is possible to create your own. Click on any
  242. start-up icon and select copy (WB 2.0), or duplicate (WB 1.3). Click on
  243. the copy and rename it accordingly. Go to information from the workbench
  244. menus and change the tool type arguments as follows:
  245.  
  246. ›3m-m<lomem>-<himem>›0m
  247.  
  248. This sets the area of memory available to QDOS. <lomem> corresponds to the
  249. start of the system variable area and <himem> corresponds to RAMTOP.
  250.  
  251. ›3m-q<QDOS system ROM>›0m
  252.  
  253. This sets the name of the required QDOS system ROM. The default name is
  254. 'SYS_cde'
  255.  
  256. ›3m-p<patcher ROM>›0m
  257.  
  258. The patcher ROM does most of the work of getting the almost QL-like system
  259. ROM to work on the Amiga. The default name is 'MAIN_cde'
  260.  
  261. Following all other parameters is a list of ROMs to load.
  262.  
  263. --------------------------------------------------------------------------
  264.  
  265. ›1m›4mQDOS SYSTEM ROM›0m
  266.  
  267. The Amiga-QDOS system ROM is a JS equivalent, with all machine dependant
  268. routines patched out, a number of bug fixes, in-built exception handling
  269. and improved floating-point output routines.
  270.  
  271. It is possible to edit and print floating point numbers in up to 8 digits
  272. before going into E notation. QDOS normally enters E notation after 7
  273. digits, which can make it difficult if you're working with long integers
  274. or 32 bit addresses.
  275.  
  276. The exception handling routines allow programs to terminate gracefully
  277. should an instruction error, bus error or general exception occur.
  278.  
  279. The move sr,<address> instruction in user mode is emulated in software for
  280. machines with 680X0 processors. This instruction is not priviledged on the
  281. 68000/68008, and can be executed while in user mode. On later processors
  282. the instruction can only be executed in supervisor mode, and causes a
  283. PRIVILEDGE VIOLATION if executed in user mode.
  284.  
  285. Programs (user or supervisor) can be single-stepped by setting bit 15 of
  286. the status register. The current register contents are dumped to BASICs'
  287. #0 with each depression of the <SPACE> bar. Pressing <ENTER> exits trace
  288. mode. If #0 is not a CON channel, TRACE information is listed to the
  289. channel continuously without any need of user intervention.
  290.  
  291. External ROMs handle all machine dependant activities; such as display,
  292. keyboard and system time. The system recognises EPROMs at $1C000 and $C000
  293. only. The external ROM "MAIN_cde" hijacks the  BOOT procedure temporarily
  294. to look for ROMs situated in memory peculiar to the Amiga.
  295.  
  296. --------------------------------------------------------------------------
  297.  
  298. ›1m›4mO/S HOOKS›0m
  299.  
  300. The external ROM "MAIN_cde" does most of the work necessary to get the
  301. QDOS system ROM operating correctly by hooking itself into the relevant
  302. system vectors. L_QDOS currently puts "MAIN_cde" at $1C000, well within
  303. the first 512 K of CHIP RAM. Once loaded, "MAIN_cde" searches for
  304. expansion ROMs situated in areas of memory peculiar to the Amiga.
  305.  
  306. ›1mADDITIONAL BASIC EXTENSIONS›0m
  307.  
  308. There are seven keywords associated with "MAIN_cde"
  309.  
  310. ›3mRESET_TOP <oldtop>,<newtop>›0m
  311.  
  312. This keyword allows users to re-boot with a new RAMTOP.
  313.  
  314. Altering RAMTOP for Amiga-QDOS is not as simple as poking the system
  315. variable SV_RAMT and doing a re-boot, because AmigaQDOS ROMs (VDU, KBD
  316. etc) are ALWAYS loaded between RAMTOP and the end of physical memory.
  317. This means that moving RAMTOP requires you to move the ROMs also.
  318.  
  319. This keyword does all the dirty work for you and takes two parameters.
  320. <oldtop> is the old top of physical memory and <newtop> is the required
  321. top of physical memory.
  322.  
  323. For example on an A500, having booted Amiga-QDOS to make use of ranger RAM
  324. at $C00000-$C80000 and wishing to reboot leaving ranger RAM free and using
  325. the bottom 512K only, one could use the command:
  326.  
  327.   ›3mRESET_TOP hex("C80000"),hex("80000")›0m
  328.  
  329. or without TK2 or PDTK...
  330.  
  331.   ›3mRESET_TOP 13107200,524288›0m
  332.  
  333. afterwards, to re-use the memory - issue the command...
  334.  
  335.   ›3mRESET_TOP 524288,13107200›0m
  336.  
  337.  
  338. ›3mRESET_SV <newsv>›0m
  339.  
  340. This keyword allows users to reposition the system variables and re-boot.
  341.  
  342. For example to move the system variables so as to free the second screen
  343. area:
  344.  
  345.   ›3mRESET_SV 196608›0m
  346.  
  347. To move the system variables back to their default position:
  348.  
  349.   ›3mRESET_SV 163840›0m
  350.  
  351. ›3mRESET_EXTENTS <oldtop>,<newtop>,<newsv>›0m
  352.  
  353. This keyword allows users to simulataneously reposition the system
  354. variables and RAMTOP and then re-boot.
  355.  
  356. For example on an A4000 with 2MB CHIP and 2MB of expansion ($7E00000-
  357. $8000000), one could move the QDOS work area from CHIP to FAST RAM with
  358. the following command:
  359.  
  360.   ›3mRESET_EXTENTS HEX("200000"),HEX("8000000"),HEX("7E00000")›0m
  361.  
  362. QDOS tasks loaded into FAST RAM, run significantly faster. Running QDOS in
  363. FAST RAM relies on QDOS tasks being 32-bit clean.
  364.  
  365.   ›3mICACHE_ON›0m and ›3mICACHE_OFF›0m
  366.  
  367. These two commands allow the instruction cache to be turned on and off
  368. respectively. Amiga-QDOS boots with the instruction cache disabled.
  369. Turning the instruction cache on can speed up QDOS tasks considerably but
  370. relies on tasks to be well behaved (and not self modifying).
  371.  
  372.   ›3mDCACHE_ON›0m and ›3mDCACHE_OFF›0m
  373.  
  374. These two commands allow the data cache to be turned on and off
  375. respectively. Amiga-QDOS boots with the data cache disabled.
  376.  
  377.   ›3mCOPYBACK_ON›0m and ›3mCOPYBACK_OFF›0m
  378.  
  379. These two commands allow copyback mode to be turned on and off
  380. respectively. Amiga-QDOS boots with copyback mode disabled.
  381.  
  382. --------------------------------------------------------------------------
  383.  
  384. ›1m›4mCLOCK›0m
  385.  
  386. ›1mINITIALISATION›0m
  387.  
  388. The system fully supports the Amiga's battery backed-up clock, and will
  389. provide you with the correct date and time by way of the SuperBASIC
  390. commands DATE and DATE$ or the equivalent machine code TRAP instruction.
  391. If your Amiga does not include a clock, the system time will default to a
  392. value passed from AmigaDOS.
  393.  
  394. ›1mBUGS›0m
  395.  
  396. Doesn't find the battery backed-up clock in the A4000. The hardware has
  397. probably moved.
  398.  
  399. --------------------------------------------------------------------------
  400.  
  401. ›1m›4mVDU›0m
  402.  
  403. ›1mSECOND SCREEN›0m
  404.  
  405. The JS system ROM is altered to allow the system variables to be moved and
  406. for the second screen to be used. The MODE command is altered accordingly,
  407. to act more like the Minerva version.
  408.  
  409. If you are familiar with the way Minerva handles its screens then you
  410. should be able to understand the following.
  411.  
  412. The normal parameters for MODE still apply but if a second parameter is
  413. given, then both parameters are passed on to the MT.DMODE system trap in D1
  414. and D2 without alteration. D1 then takes on the following meaning:
  415.  
  416. bit(s)     function          (clear) | (set)
  417.  
  418.   0     other screen          visible | blank
  419.   1     default screen       visible | blank
  420.   2     other screen mode    mode4 | mode8
  421.   3     default screen mode    mode4 | mode8
  422.   4     show screen         scr0 | scr1
  423.   5     set default screen     scr0 | scr1
  424.   6     D1 usage         D1.W | D1.B (D1.W - msb all ones)
  425.  
  426.   7     opposite to bit 6 i.e bits 7/6 always = 0/1 or 1/0
  427.  
  428.  8-15     ignored if bit 6 set. Otherwise...
  429.  
  430.  8-13     associated with bits 0-5 (clear=set/clr, set=toggle)
  431.  
  432.   14     redraw other screen
  433.   15     redraw default screen
  434.  
  435. Thus to clear, set or toggle just ONE attribute of the display mode, the
  436. mode command takes the following form:
  437.  
  438.   ›3mMODE -128+n*(k-256),-1›0m
  439.  
  440. where:
  441.                       (k=0) |    (k=1)    | (k=257)
  442.  
  443.   (n=1) - other screen state:        visible |    blank    | toggle
  444.   (n=2) - default screen state:     visible |    blank    | toggle
  445.   (n=4) - other screen mode:       4 colour |  8 colour | toggle
  446.   (n=8) - default screen mode:       4 colour |  8 colour | toggle
  447.   (n=16) - show screen:            scr0 |     scr1    | toggle
  448.   (n=32) - set default screen:           scr0 |     scr1    | toggle
  449.  
  450. You can of course mix and match...
  451.  
  452.   ›3mMODE -128 + 2*(0-256) + 16*(1-256) + 32*(1-256),-1›0m
  453.  
  454.    ...performs the following:
  455.  
  456.    default screen = Scr1
  457.    default screen = visible
  458.    show Scr1
  459.  
  460.    Note that the default screen is set BEFORE any other operations are
  461.    performed.
  462.  
  463.  
  464. It is now possible to launch tasks in Amiga-QDOS that default to scr1 for
  465. output:
  466.  
  467.    ›3mRESET_SV 196608         ›0m   move system variables & reset
  468.  
  469.    ›3mMODE -128+32*(1-256),-1›0m   set default screen to scr1
  470.    ›3mEXEC flp1_XCHANGE      ›0m   launch application
  471.    ›3mMODE -128+32*(0-256),-1›0m   re-set default screen to scr0
  472.  
  473.  
  474. CTRL-C will switch screens if the enabled task requires it. You can also
  475. switch screens by pressing CTRL-TAB, or by poking the relevant hardware
  476. register.
  477.  
  478. ›1mHARDWARE REGISTERS›0m
  479.  
  480. Amiga-QDOS emulates the hardware register MC_STAT ($18063) to an extent.
  481. You can blank the screen by setting bit 1. You can switch screens by
  482. toggling bit 7. You can switch screen modes by toggling bit 3.
  483.  
  484. ›1mMOUSE POINTER›0m
  485.  
  486. The emulator can display, and return the screen co-ordinates of a simple
  487. mouse pointer (SPRITE). Although the mouse routines work correctly with
  488. QRAM pointer software, the co-ordinates of the sprite do not correspond
  489. with the co-ordinates of the QRAM pointer. When using QRAM, you should
  490. therefore not have the Amiga SPRITE pointer active.
  491.  
  492. ›1mADDITIONAL BASIC EXTENSIONS›0m
  493.  
  494. There are five keywords associated with the VDU driver.
  495.  
  496. ›3mBLIT_OFF›0m
  497.  
  498. The BLIT_OFF command turns all blitter activity off. This will prevent the
  499. VDU driver from refreshing the QL screen.
  500.  
  501. ›3mBLIT_ON›0m
  502.  
  503. The BLIT_ON command turns blitter activity back on allowing the VDU driver
  504. to properly refresh the QL screen.
  505.  
  506. ›3mSCR_PRIORITY <inc>, <bnd>›0m
  507.  
  508. This command sets the speed at the VDU driver refreshes the QL screen. It
  509. allows the blitter to move (inc/bnd)*(1/16) th of the screen every 1/50th
  510. of a second - for example:
  511.  
  512.   ›3mSCR_PRIORITY 4,1›0m
  513.  
  514. This will refresh (4/1)*(1/16) = 4/16 =1/4 of the screen every 1/50th of
  515. a second.
  516.  
  517.   ›3mSCR_PRIORITY 8,1›0m
  518.  
  519. This will refresh (8/1)*(1/16) = 8/16 =1/2 of the screen every 1/50th of
  520. a second.
  521.  
  522.   ›3mSCR_PRIORITY 16,1›0m
  523.  
  524. This will refresh (16/1)*(1/16) = 16/16 = whole of the screen every 1/50th
  525. of a second.
  526.  
  527. If you want maximum CPU speed and don't mind a slow display, you could
  528. try:
  529.  
  530.   ›3mSCR_PRIORITY 1,2›0m
  531.  
  532. Please experiment, but remember - refreshing more than half the screen in
  533. 1/50th of a second is just not physically possible. The default setting is
  534. SCR_PRIORITY 4,1.
  535.  
  536. ›3mPTR_ON›0m
  537.  
  538. This command displays a SPRITE on screen, relating to the position of the
  539. mouse pointer.
  540.  
  541. ›3mPTR_OFF›0m
  542.  
  543. This command hides the SPRITE relating to the position of the mouse
  544. pointer.
  545.  
  546. ›1mBUGS›0m
  547.  
  548. Due to a timing fault, for certain values of SCR_PRIORITY the first byte
  549. of every 32 nd line flickers spuriously. The VDU driver could time BLITTER
  550. access to screen memory more precisely, if the BLITTER commands were part
  551. of a general COPPER list. This would reduce screen flicker since memory
  552. access would sync with the vertical refresh automatically.
  553.  
  554. --------------------------------------------------------------------------
  555.  
  556. ›1m›4mACE›0m
  557.  
  558. This ROM takes over from the blitter providing QL screen emulation via the
  559. processor. On 68030 processors and above, screen emulation is both
  560. smoother and faster. On earlier processors it can be too processor
  561. intensive - so is not enabled on the F1/F2 boot screen but can be enabled
  562. with the ACE_ON command. The ACE routines (written by S N Goodwin) have an
  563. advantage over the blitter routines in that they fully support BOTH MODE 4
  564. and MODE 8.
  565.  
  566. ›1mWhy?›0m
  567.  
  568. The 32 bit CPU can convert the QL interleaved display into two Amiga bit
  569. planes faster than the Blitter in the AGA chip-set. If the CPU is used the
  570. Qdos kernel in chip RAM runs faster and the top display update rate is
  571. increased to a full flicker-free 50/60 Hertz. You might also like to try
  572. it on OCS/ECS systems with a processor accelerator, but the 16 bit chip
  573. RAM will limit the cpu's advantage. If you only have a 68000 you're almost
  574. certainly better off using the blitter.
  575.  
  576. ›1mHow?›0m
  577.  
  578. The ACCELERATOR is a normal Qdos server in the polled list, performed 50
  579. times per second while the machine is in User mode (and skipped in
  580. Supervisor mode). It does the same job as the blitter interrupt server, so
  581. that is turned off - to free extra bus bandwidth - once ACE is up and
  582. running.
  583.  
  584. ›1mReally, How?›0m
  585.  
  586. The method relies on the caches for code and data and is optimised for the
  587. 68040. We copy alternate bytes from Qdos screen memory to alternate
  588. bit-planes. The method used in ACE_CODE reads eight bytes at a time then
  589. swaps registers around to generate two or three long words for the
  590. bitplanes. This is much faster than the use of MOVE.B or MOVEP for byte
  591. access.
  592.  
  593. This program detects the data cache on the 68030/40/60 and temporarily
  594. turns it off for top speed when reading and writing chip memory.
  595.  
  596. ›1mACE v BLITTER - raw CPU power versus custom chips›0m
  597.  
  598. TEST RESULTS for ACE runing on a CBM A4000/040 with Chip RAM only or with
  599. copyback on or off in Fast RAM. These tests used ACE version 3.15, MODE 4
  600. and the DIY Toolkit timers to time one 10,000 iteration FOR loop.
  601.  
  602. ACE_PRIORITY  CHIP QDOS      FAST QDOS          COPYBACK
  603.  
  604.    16,1     17.18        4.66        3.46
  605.    16,2      5.04        1.50        1.12
  606.    16,3      4.08        1.22        0.90
  607.    16,4      3.72        1.10        0.84
  608.    16,5      3.52        1.06        0.80
  609.    16,6      3.42        1.02        0.78
  610.    16,7      3.34        1.00        0.76
  611.    16,8      3.28        0.98        0.74
  612.  
  613. At ACE_PRIORITY 16,N the 68040 spends about three quarters of 1 in N
  614. fields servicing the display. Chip RAM access time predominates. Note that
  615. Copyback speeds up SuperBASIC by over 30 per cent compared with Write
  616. Through cacheing, and the emulator is four or fives times faster if you
  617. run it from fast RAM even though the 'QL ROM' is still in Chip!
  618.  
  619. In a system with 32 bit fast memory the speed of tasks and extensions is
  620. much increased, but the screens, Qdos and SuperBASIC interpreter routines
  621. remain in chip memory, for compatability reasons, and that is relatively
  622. slow. CPU caches can soak up some but not all of the difference.
  623.  
  624. Both blitter and CPU display updates are slowed if chip memory is already
  625. busy, e.g. because of Qdos ROM reads or screen writes. The difference is
  626. that the blitter contention is asynchronous, while the CPU is the only
  627. thing (other than DMA) accessing chip memory during ACE screen updates.
  628.  
  629. ›1mADDITIONAL BASIC EXTENSIONS›0m
  630.  
  631. There are five keywords associated with ACE.
  632.  
  633. ›3mACE_OFF›0m
  634.  
  635. The ACE_OFF command turns off ACE screen emulation and re-enables blitter
  636. screen emulation.
  637.  
  638. ›3mACE_ON›0m
  639.  
  640. The ACE_ON command disables blitter screen emulation and enables ACEs'
  641. processor dependent screen emulation.
  642.  
  643. ›3mACE_PRIORITY <inc>, <bnd>›0m
  644.  
  645. This procedure determines the number of 2K chunks and number of fields per
  646. update, 1..16 and 1..255 respectively. The default 8,2 is the equivalent
  647. of SCR_PRIORITY 4,1.
  648.  
  649. The parameters correspond to those of SCR_PRIORITY.
  650.  
  651. The first parameter controls the smoothness of the update, in units of
  652. 1/16 of a screen. If you have a fast processor (68040 or better) you can
  653. use 16 and have the entire screen updated in one go - twice as fast as the
  654. quickest blitter setting, 8,1 - but this is too much for a 25 MHz 68030,
  655. which struggles to complete a field in 20 milliseconds. Lower values mean
  656. the processor tries to do less in a single field, which means you may see
  657. a line across the screen during rapid screen updates, at the point where
  658. one update stops and the next takes over.
  659.  
  660. Qdos does not allow an interrupt server to take more than 20 mS to run -
  661. the time up to the next interrupt - so you should not experiment with high
  662. values for ACE_PRIORITY unless you have a fast processor. Ignore this and
  663. Qdos may lock up!
  664.  
  665. The second parameter controls the number of fields that are displayed
  666. between one full (or partial) update and the next. A value of 1 means that
  667. ACE runs 50 times per second (every 1 field) which imposes a heavy CPU
  668. load but gives the most rapid screen response. A value of 2 means that ACE
  669. runs every other frame; 3 means ACE runs once every three frames, giving
  670. more time for programs at the price of only about 17 full or paritial
  671. updates per second. The second value can be up to 255, which leaves 99.6
  672. per cent or more of the CPU time for 'real' programs but gives a very slow
  673. screen update - about one update every 5.1 seconds! If you have fast
  674. memory you're probably better off using the blitter than ACE in this case.
  675.  
  676. ACE_ON and ACE_OFF link and unlink the interrupt handler. ACE_PRIORITY
  677. reports 'not found' if you try to use it when ACE is not linked in.
  678.  
  679. ›3mACE_RATE%›0m
  680.  
  681. This function returns the number of fields that are output to the screen
  682. between one ACE update and the next.
  683.  
  684. ›3mACE_SIZE%›0m
  685.  
  686. This function returns the number of 2K sections of the Qdos screen to be
  687. copied to Amiga bitplanes at each update.
  688.  
  689. Together these functions ACE_RATE% and ACE_SIZE% let you read the current
  690. ACE_PRIORITY settings.
  691.  
  692. --------------------------------------------------------------------------
  693.  
  694. ›1m›4mKEYBOARD›0m
  695.  
  696. ›1mQL RESET›0m
  697.  
  698. You can perform a QL cold-reset by holding down CTRL-SHIFT-ALT-TAB. It is
  699. therefore possible to load an expansion ROM into memory at $C000, and have
  700. the emulator install it upon the next cold-reset.
  701.  
  702. ›1mSECOND SCREEN›0m
  703.  
  704. It is possible to flick between the second screen and the standard screen
  705. by pressing CTRL-TAB.
  706.  
  707. ›1mINTERRUPTS›0m
  708.  
  709. You can simulate a level 7, 5 or 2 interrupt by pressing CTRL-ALT and the
  710. relevant number (i.e. 7,5 or 2). The level 7 interrupt (CTRL-ALT-7)
  711. performs the equivalent of a non-maskable interrupt (NMI) and can be used
  712. to resume the machine from fatal system hang-up. It Restores BASIC'S A6
  713. and A7, sets its Priority to 32, releases the Job and continues execution
  714. at the Warm-start address.
  715.  
  716. ›1mSPECIAL KEYS›0m
  717.  
  718. Keys F6-F10 produce the same codes as SHIFT F1-F5
  719.  
  720. ›1mNEW TRAP #1 CALL›0m
  721.  
  722. Amiga-QDOS includes a new foreign Keyboard Manager TRAP #1, D0=$27,
  723. D1=Address of table, that allows for a customisable keyboard table (the
  724. default is German).
  725.  
  726. ›1mADDITIONAL BASIC EXTENSIONS›0m
  727.  
  728. There are six keywords associated with the keyboard.
  729.  
  730. ›3mKEYDT›0m
  731.  
  732. This command sets a German keymap (the default)
  733.  
  734. ›3mKEYUK›0m
  735.  
  736. This command sets a UK keymap (only available if you load KEYUK_cde).
  737.  
  738. ›3mPTR_LIMITS [<Xleft>,<Ytop>,<Xright>,<Ybottom>]›0m
  739.  
  740. This command sets limiting bounds for the position of the mouse pointer.
  741. The default limits are 0,0,256,256
  742.  
  743. ›3mPTR_INC [<Xdist>,<Ydist>]›0m
  744.  
  745. This command sets how far the mouse must be moved before the KEYROW
  746. function registers cursor movement. By default Xdist is 4 and Ydist is 8.
  747.  
  748. ›3mPTR_X%›0m
  749.  
  750. This function returns the X coordinate of the mouse pointer. Mouse
  751. coordinates are measured in low resolution pixels (a limit imposed on
  752. Amiga sprites).
  753.  
  754. ›3mPTR_Y%›0m
  755.  
  756. This function returns the Y coordinate of the mouse pointer. Mouse
  757. coordinates are measured in low resolution pixels (a limit imposed on
  758. Amiga sprites).
  759.  
  760. --------------------------------------------------------------------------
  761.  
  762. ›1m›4mSOUND›0m
  763.  
  764. QDOS sounds are supported in full, via the SuperBASIC BEEP command and its
  765. equivalent machine code MT.IPCOM command (Trap#1 with d0=$11).
  766.  
  767. --------------------------------------------------------------------------
  768.  
  769. ›1m›4mSER DEVICE›0m
  770.  
  771. The serial device is pretty reliable - even at high speeds!
  772.  
  773. ›1mSER DESCRIPTION›0m
  774.  
  775. Following is a complete description of the SER device syntax, which
  776. includes a number of useful additions.
  777.  
  778. OEMS - ODD, EVEN, MARK or SPACE parity (default = none)
  779.  
  780. IH   - IGNORE or use HANDSHAKE (default = ignore)
  781.  
  782. RNCL - RAW, CR/LF, CR or LF end of line protocol (default = raw)
  783.  
  784. ZF   - CTRL-Z or FORMFEED end of file (CLOSE) protocol
  785.        (default= none)
  786.  
  787. For example the command OPEN#4;"SER1INF" opens the serial channel to
  788. ignore H/W handshakes, translate end of line characters into CR/LF and
  789. send a form-feed at the next CLOSE#4.
  790.  
  791. On input, CR, LF and the CR/LF couple are translated into a single LF
  792. character - unless RAW is selected as the end of line protocol.
  793.  
  794. In future releases 'IH' may be extended to 'IHX', allowing for Xon/Xoff
  795. (software) handshake.
  796.  
  797. --------------------------------------------------------------------------
  798.  
  799. ›1m›4mPAR DEVICE›0m
  800.  
  801. The parallel device is buffered and interrupt driven - so within the
  802. constraints of printer speed, output via the parallel port is very fast.
  803.  
  804. ›1mPAR DESCRIPTION›0m
  805.  
  806. Following is a complete description of the PAR device syntax which
  807. includes useful end of line and end of file protocols.
  808.  
  809. RNCL - RAW, CR/LF, CR or LF end of line protocol (default = raw)
  810.  
  811. F    - use FORMFEED as end of file (CLOSE) protocol
  812.        (default = none)
  813.  
  814. For example the command OPEN#4;"PARNF" opens a channel to the parallel
  815. port, translating end of line characters into CR/LF, and sending a form-
  816. feed at the next CLOSE#4.
  817.  
  818. --------------------------------------------------------------------------
  819.  
  820. ›1m›4mFLP DEVICE›0m
  821.  
  822. The Format of a QDOS filename on the floppydisk is FLPn_name_ext, where
  823. FLPn_ is the device name. FLP1_ represents the internal drive, FLP2_ the
  824. first external drive and so on. Filenames consist of up to 32 characters.
  825. The *D2D random access convention is emulated in full, so CP/M and MS-DOS
  826. emulators should work without problems.
  827.  
  828. ›1mADDITIONAL BASIC EXTENSIONS›0m
  829.  
  830. The floppy driver has a number of associated keywords. The commands MOUNT
  831. and DSKCNG are necessary for older drives that do not respond correctly to
  832. disk changes, or do not supply a disk ID. The command DISKCOPY is included
  833. because it is incredibly useful. FLP_USE, PROG_USE, DATA_USE etc are
  834. implemented for compatibility with QL disk interfaces that invariably
  835. include such commands.
  836.  
  837. ›3mMOUNT <drive>›0m
  838.  
  839. Use MOUNT 1 for FLP2_, MOUNT 2 for FLP3_, or MOUNT 3 for FLP4_. The
  840. emulator tries to read a disk ID from every drive, and only allocates
  841. drive buffers for those drives that respond correctly. Unfortunately some
  842. older drives do not have this feature, and on such drives you will need
  843. to use the MOUNT command. Issue this command once only, immediately after
  844. a boot, and only if the drive is not recognised.
  845.  
  846. ›3mDSKCNG <drive>›0m
  847.  
  848. Use DSKCNG 1 for FLP2_, DSKCNG 2 for FLP3_, or DSKCNG 3 for FLP4_. The
  849. Amiga hardware automatically recognises when you insert a new disk into a
  850. drive. Unfortunately some older drives do not have this feature, and on
  851. such drives you will need to use the DSKCNG command each time you insert
  852. a disk afresh.
  853.  
  854. ›3mDISKCOPY [#<channel>]›0m
  855.  
  856. DISKCOPY duplicates the disk in Flp1_ onto the disk in Flp2_. You require
  857. two drives in order to use this command. DISKCOPY will ask you to insert
  858. the source and destination disks before proceeding. Messages are printed
  859. on the specified channel, or to #0 if no channel number is given. It is
  860. possible to BREAK from this command with CTRL-SPACE.
  861.  
  862. ›3mFLP_USE <name>›0m
  863.  
  864. Sets the name of the floppy disk system. By default the name of the floppy
  865. disk system is 'FLP', but this can be changed for example to 'MDV' or any
  866. other three-character string.
  867.  
  868. ›3mPROG_USE <name>›0m
  869.  
  870. Sets the default device/directory for programs and executables.
  871.  
  872. ›3mDATA_USE <name>›0m
  873.  
  874. Sets the default directory data files.
  875.  
  876. ›3mSPL_USE <name>›0m
  877.  
  878. Sets the name of the default copy/spool device/directory.
  879.  
  880. ›3mDEST_USE <name>›0m
  881.  
  882. As SPL_USE except that this command appends an underline the the <name> if
  883. none is present.
  884.  
  885. ›3mPROGD$›0m
  886.  
  887. Returns the name of the default program device/directory.
  888.  
  889. ›3mDATAD$›0m
  890.  
  891. Returns the name of the default device/directory for data files.
  892.  
  893. ›3mDESTD$›0m
  894.  
  895. Returns the name of the default copy/spool device/directory.
  896.  
  897. --------------------------------------------------------------------------
  898.  
  899. ›1m›4mJAN DEVICE›0m
  900.  
  901. The JANus device driver gives you access to the Harddisk from the IBM
  902. Sidecar within QDOS.
  903.  
  904. The JANus device driver expects the program QLDISK.COM running on the IBM
  905. side. This program is also included in source format (QLDISK.PAS) and must
  906. be compiled with TURBO pascal 3.0! Any filename has the form: JAN1_name_ext
  907. where 1 [,2,3,4,5,6,7,8] has no function. The extension is converted from
  908. _ext to .ext automatically. Names consist of capital letters only and must
  909. not be longer than 8 characters.
  910.  
  911. Subdirectories and file conventions of MS-DOS are used. If you try to read
  912. MS-DOS files from QDOS, you will experience some trouble, since QDOS needs
  913. a 64 byte fileheader, which is of course not present in MS-DOS files. The
  914. other way around, you will find 64 additional bytes at the top of any QDOS
  915. file, when you try to read QDOS files from the IBM side.
  916.  
  917. ›1mADDITIONAL BASIC EXTENSIONS›0m
  918.  
  919. ›3mCHDIR <"path">›0m
  920.  
  921. changes the  subdirectory path (CD on IBM)
  922.  
  923. ›3mMKDIR <"name">›0m
  924.  
  925. make subdirectory (MKDIR on IBM)
  926.  
  927. ›3mRMDIR <"path">›0m
  928.  
  929. remove subdirectory (RMDIR on IBM)
  930.  
  931. ›3mSHODIR›0m
  932.  
  933. display the actual path at channel #1
  934.  
  935. ›3mJAN_USE <"abc">›0m
  936.  
  937. set up a new device name for JAN (eg MDV)
  938.  
  939. --------------------------------------------------------------------------
  940.  
  941. ›1m›4mQUBIDE QDOS harddisk driver›0m
  942.  
  943. At present, the emulator can only access dedicated QubIDE partitions on
  944. the built-in IDE drives of an A4000 or A1200.
  945.  
  946. In order to access your IDE drive, add an entry ›3mQLboot:roms/QubA1200_rom›0m
  947. or ›3mQLboot:roms/QubA4000_rom›0m in the tooltypes of the Amiga QDOS start icon
  948. between ›3mQLboot:roms/MDV›0m and ›3mQLboot:roms/FLP›0m.
  949.  
  950. Amiga-QDOS cannot access data on AmigaDOS volumes, so to use a hard disk
  951. you should find yourself a spare IDE drive, connect it up and format it
  952. as a QDOS volume with the command ›3mFORMAT WIN1_diskname›0m
  953.  
  954. REMEMBER THIS COMMAND WILL ERASE ALL DATA FROM THE HARDDISK
  955.  
  956. --------------------------------------------------------------------------
  957.  
  958. ›1m›4mHARDWARE DIFFERENCES›0m
  959.  
  960. ›1mTAS INSTRUCTION PROBLEMS:›0m
  961.  
  962. This emulator is a good QL-clone, however there are hardware differences
  963. that may cause initial problems:
  964.  
  965. The Amiga hardware does not allow the CPU two contiguous bus cycles. This
  966. means that any READ-MODIFY-WRITE cycle fails, and as a result the machine-
  967. code instruction 'TAS' does not function correctly on the Amiga.
  968.  
  969. It must be understood that a fair number of QL programs have been compiled
  970. from BASIC and that both the leading QL BASIC compilers 'TURBO' & 'QLIB',
  971. contain TAS instructions - as do all TURBO'd and QLIB'd tasks. It follows
  972. that without modification a large number of QL programs will fail.
  973.  
  974. To remedy the problem, Line-A (instruction: %1010111XXXXXXXXX) is
  975. programmed to emulate TAS, and a utility is included on the 'QLutils' disk
  976. that makes QL tasks Amiga friendly by replacing all TAS instructions with
  977. Line-A.
  978.  
  979. ›1mNO_TAS›0m
  980.  
  981. This program removes TAS instructions in recognised TURBO'ed and QLIB'ed
  982. tasks, substituting equivalent code. If the code is not thus recognised,
  983. TAS will be replaced by a Line-A instruction (which is programmed to
  984. emulate TAS but is not QL-compatible) or by extending the code.
  985.  
  986. ›3mFIXES FOR QLIBERATOR›0m
  987.  
  988. The Q_Liberator runtime libraries contain a single TAS instruction...
  989. TAS $8F(A6) in v3.22 and TAS $8F(A4) in the library used with the budget
  990. compiler. As a result any program compiled to include libraries will also
  991. contain this instruction.
  992.  
  993. NO_TAS automatically recognises QLIB'ed tasks, removes the TAS instruction
  994. and substitutes equivalent code. The result is a task that is compatible
  995. with a 'real' QL and runs within Amiga-QDOS without problems.
  996.  
  997. ›3mFIXES FOR TURBO COMPILER›0m
  998.  
  999. The TURBO compiler package contains a single TAS $8F(A6) in PARSER_task
  1000. and two TAS instructions ( TAS $8F(a6) and TAS $17(a2) ) in CODEGEN_task.
  1001. Any program compiled with TURBO may also contain these instructions.
  1002.  
  1003. NO_TAS automatically recognises TURBO'ed tasks, removes the TAS
  1004. instructions and substitutes equivalent code. The result is a task that is
  1005. compatible with a 'real' QL and runs within Amiga-QDOS without problems.
  1006.  
  1007. ›3mFIXES FOR NON QLIB/TURBO CODE›0m
  1008.  
  1009. If the code is not recognisable as having been produced by QLIB or TURBO,
  1010. NO_TAS will check the code and process it dependent on its size;
  1011.  
  1012. SMALL CODE FIX
  1013.  
  1014.   If the code is less than 32K in size, NO_TAS will attempt to replace all
  1015.   TAS instructions by a branch to an equivalent subroutine. The subroutine
  1016.   is tagged onto the end of the code, so any file processed in such a way
  1017.   will 'grow'. The result is a task that is compatible with both
  1018.   Amiga-QDOS and a 'real' QL, but which might confuse tasks that make
  1019.   assumptions upon their own length.
  1020.  
  1021. LARGE CODE FIX
  1022.  
  1023.   If the code is bigger than 32K in size, TAS instructions will be
  1024.   replaced by a Line-A instruction which is programmed to emulate TAS. The
  1025.   Line-A code is INCOMPATIBLE with a 'real' QL. Code modified in this way
  1026.   will cause a total system crash if run on a real QL.
  1027.  
  1028. With both the small and large code fixes, a disassembly is shown and you
  1029. will be asked whether or not to replace the code. Note however that the
  1030. program may display TAS instructions where none are present (i.e. within
  1031. program DATA). A good rule-of-thumb is that true CODE is usually
  1032. surrounded by other machine code instructions, whereas DATA is liberally
  1033. sprinkled with DC.Ws
  1034.  
  1035. ›1mRESTORE_TAS›0m
  1036.  
  1037. Use this program to 'put-back' TAS instructions into programs that have
  1038. been altered by NO_TAS.
  1039.  
  1040. --------------------------------------------------------------------------
  1041.  
  1042. ›1m›4mSOURCE FILES›0m
  1043.  
  1044. The complete assembly source for the emulator is included with this
  1045. release.
  1046.  
  1047. ›1mEDITING THE SOURCE›0m
  1048.  
  1049. If you need to alter a source file in any way, use an editor that
  1050. preserves TABS. If you use an editor that expands tabs to spaces during a
  1051. SAVE, you will find that file will increase in size dramatically - to a
  1052. point where it may exceed available disk space.
  1053.  
  1054. If you are looking for a reasonably small, WB1.3 compatible, simple,
  1055. TAB preserving PD text editor - try JED.
  1056.  
  1057. In order to view the source files correctly, tabs should be set to NINE
  1058. characters.
  1059.  
  1060. ›1mRE-ASSEMBLING THE SOURCE›0m
  1061.  
  1062. Original sources were assembled in QDOS with GST's Macro assembler.
  1063. Current sources are assembled on the Amiga with A68k.
  1064.  
  1065. Expansion ROMs handle all Amiga specific functions, freeing the QDOS ROM
  1066. of any hardware dependent source. There are separate ROMs for VDU, Clock,
  1067. Keyboard, PAR device, SER device and FLP device. This makes de-bugging a
  1068. lot easier.
  1069.  
  1070. Each ROM has its own MAKE file. CD into a make directory and type the
  1071. name of the relevent script file to rebuild a particular ROM.
  1072.  
  1073. ›1mCOMMENTS IN THE SOURCE›0m
  1074.  
  1075. I have commented the QDOS ROM source wherever it differs from either the
  1076. original JS source, or from Rainer Kowallik's version. Comments begin with
  1077. the characters ";*/" so are easily found. There are a number of keys
  1078. following these characters, that identify the kind of modification. These
  1079. are:
  1080.  
  1081. ›3m;*/note›0m
  1082.  
  1083. This indicates a point that you should be aware of.
  1084.  
  1085. ›3m;*/mend›0m
  1086.  
  1087. This indicates a bug fix.
  1088.  
  1089. ›3m;*/modify›0m
  1090.  
  1091. This indicates that the code remains functionally equivalent to the JS
  1092. version, but is changed in some way.
  1093.  
  1094. ›3m;*/overlay›0m
  1095.  
  1096. This indicates that the code differs significantly from the JS version.
  1097.  
  1098. ›3m;*/insert›0m
  1099.  
  1100. This indicates a new piece of code.
  1101.  
  1102. ›1mKEY MODIFIERS›0m
  1103.  
  1104. key modifiers precede a key, altering its meaning in some way.
  1105.  
  1106. ›3mundo›0m
  1107.  
  1108. This indicates that previous amendments were discarded in favour of the
  1109. original JS source. For example:
  1110.  
  1111. ›3m;*/undomend›0m
  1112.  
  1113. This means that an apparent bug, fixed in a previous release, was not a
  1114. bug after all.
  1115.  
  1116. ›3mbegin and end›0m
  1117.  
  1118. These key modifiers bracket an amended section of code. e.g:
  1119.  
  1120. ›3m;*/begininsert and ;*/endinsert›0m
  1121.  
  1122. These indicate the start and end of a section of code that is inserted
  1123. anew.
  1124.  
  1125. --------------------------------------------------------------------------
  1126.  
  1127. ›1m›4mOTHER UTILITIES ON THE QL SUPPORT DISK›0m
  1128.  
  1129. ›1mPLAY_SCALE_bas›0m and ›1mPLAY_MUSIC_bas›0m
  1130.  
  1131. Two programs to demonstrate the capabilities of the SuperBASIC BEEP
  1132. command.
  1133.  
  1134. ›1mSER_TRANSFER_bas›0m
  1135.  
  1136. This is an old program (formerly QLTRA_bas) that allows you to transfer
  1137. files between two QDOS machines via a cable and the serial device. The
  1138. program transfers a complete volume.
  1139.  
  1140. ›1mPOKE_DIGITS_bas›0m
  1141.  
  1142. This utility allows you to alter QDOS so as to handle 5, 6, 7 or 8 digit
  1143. numbers before entering E notation. The emulator uses eight digit numbers
  1144. as opposed to the standard seven digits. If this proves to be a problem,
  1145. use POKE_DIGITS_bas to change back to seven digits.
  1146.  
  1147. ›1mBOOT›0m
  1148.  
  1149. The boot program on the 'QLutils' disk loads a number of toolkits into
  1150. memory, and sets up a small RAM disk.
  1151.  
  1152. ›1mPD RAM-disk›0m
  1153.  
  1154. The QL support disk now contains a Public domain RAM disk. It is
  1155. relatively slow but functions reasonably well. If anyone knows who wrote
  1156. it, please let me know so that I can credit the author in these docs.
  1157.  
  1158. ›1mPDTK_rext›0m
  1159.  
  1160. This Freeware BASIC toolkit includes a small number of SuperBASIC
  1161. commands. Some of these are required by the programs SYS_REF, NO_TAS
  1162. etc., others are included because I find them incredibly useful. See the
  1163. documentation on the QLutils disk.
  1164.  
  1165. ›1mD68K_rext›0m
  1166.  
  1167. This disassembly toolkit includes a small number of SuperBASIC commands to
  1168. help you to disassemble files and memory. The toolkit is required by
  1169. NO_TAS. See the documentation on the QLutils disk.
  1170.  
  1171. ›1mSYS_REF_task›0m
  1172.  
  1173. SYS_REF is a utility that patches tasks & M/C which rely on the system
  1174. variables being at $28000, to work when the sys vars are elsewhere (i.e.
  1175. with the second screen enabled).
  1176.  
  1177. It has been tested on several programs (even TURBO) under Minerva and
  1178. Amiga-QDOS (with 2nd screen enabled), and WORKS!
  1179.  
  1180. SYS_REF also makes TURBO & TURBO-compiled programs 32-bit clean.
  1181.  
  1182. ›1mC68PATCH›0m
  1183.  
  1184. Patch C68 programs to be COPYBACK friendly
  1185.  
  1186. ›1mDOC2RTF›0m
  1187.  
  1188. Translate QUILL DOC files into .RTF form
  1189.  
  1190. ›1mMEMORY_MAP›0m
  1191.  
  1192. Simple program to display the QL memory map
  1193.  
  1194. --------------------------------------------------------------------------
  1195.  
  1196. ›1mINTRODUCTION AND MOTIVATION›0m
  1197.  
  1198. I bought my first QL in 1984 in Berlin, and since this time the QL has
  1199. proved to be a very handy tool for all kinds of computer work.
  1200. Unfortunately the QL was not very popular. It has an active user group,
  1201. but little software or hardware. With the arrival of the ATARI 520 ST and
  1202. the increasing popularity of the IBM clone the QL became less and less
  1203. interesting to new users, until eventually even Sinclair himself lost
  1204. interest.
  1205.  
  1206. So far so bad, but after checking the possible alternatives, there was no
  1207. computer that was any better than the QL. Then came the idea of building a
  1208. new computer with QDOS, a 68000 CPU and a reasonable keyboard -- but why
  1209. build a new computer, when you can buy one?
  1210.  
  1211. For this purpose the AMIGA seemed best suited. It is highly expandable and
  1212. has excellent hardware. Furthermore, it seemed easier to emulate a QL
  1213. screen on the AMIGA, than on the ATARI.
  1214.  
  1215. The emulator is based around a JS-ROM disassembly, expanded in some
  1216. features, and initially tested on a real QL. The BLITTER performs QL
  1217. screen emulation, which makes it a very fast process costing nearly no CPU
  1218. time. Keyboard emulation includes Ctrl-Alt-7 , KEYROW and IPC calls.
  1219. Additionally upon a system error, a default trap handler will tell you
  1220. what happened at what address, and return you to SuperBASIC.
  1221.  
  1222. Apart from the MicroDriVes and NETwork, the emulator implements all the
  1223. standard QL devices (CON_, SCR_, PIPE_, SER1, PAR, FLPn_).
  1224.  
  1225. RAINER KOWALLIK
  1226.  
  1227. --------------------------------------------------------------------------
  1228.  
  1229. ›1m›4mADDENDUM›0m
  1230.  
  1231. ›1mCONTINUING DEVELOPMENT›0m
  1232.  
  1233. I am under the impression that due to recent commitments, Rainer has very
  1234. little time to make any further improvements to the emulator. Therefore,
  1235. in Rainers absence, I have taken on the responsibility for the emulators'
  1236. continuing development.
  1237.  
  1238. MARK J SWIFT
  1239.  
  1240. --------------------------------------------------------------------------
  1241.  
  1242. ›1m›4mSOFTWARE OVERVIEW›0m
  1243.  
  1244. This section contains a list of QDOS programs with specific implementation
  1245. notes for Amiga-QDOS. The list was part of the original emulator
  1246. documentation, so many of the problems mentioned may not now be relevant.
  1247.  
  1248. Most of the descriptions do not mention which version of the emulator the
  1249. software was tested on, or who did the testing. I have included a version
  1250. number and my initials wherever I have been able to confirm the validity
  1251. of a particular statement. If you would like to add you're own comments on
  1252. a particular program, please let me know.
  1253.  
  1254. MARK J SWIFT
  1255.  
  1256. --------------------------------------------------------------------------
  1257.  
  1258. ›1m›4mSOFTWARE OVERVIEW - TOOLKITS›0m
  1259.  
  1260. ›1mT. Tebby Toolkit 2 [Qjump]›0m
  1261.  
  1262. This Toolkit is almost an essential for Working with QDOS. It provides you
  1263. with JOB handling, parameter passing facilities, a full screen BASIC
  1264. editor, a command line stack, wild card file functions, default devices,
  1265. definable keys and many other useful commands. It's a shame there's no
  1266. public domain equivalent.
  1267.  
  1268.   ›3mIMPLEMENTATION NOTES - 3.22 MJS›0m
  1269.  
  1270.   Use NO_TAS_task to remove all TAS instructions.
  1271.  
  1272.  
  1273. ›1mT. Tebby pointer interface and Window manager [Qjump]›0m
  1274.  
  1275. For those who miss the Workbench and mouse handling, this is the QDOS
  1276. equivalent. There are more and more programs appearing on the QL that use
  1277. this interface as a front-end. It takes some getting used to.
  1278.  
  1279.   ›3mIMPLEMENTATION NOTES - 3.22 MJS›0m
  1280.  
  1281.   At the very least PTR_GEN must have TAS instructions removed. Other
  1282.   files may also need to be fixed. Be very careful however not to
  1283.   TAS-replace DATA.
  1284.  
  1285.  
  1286. ›1mT. Tebby Ramdisk [Qjump]›0m
  1287.  
  1288. Bundled with the pointer environment and the QRAM 'workbench' equivalent.
  1289.  
  1290.   ›3mIMPLEMENTATION NOTES - 3.22 MJS›0m
  1291.  
  1292.   The original emulator documentation mentions this 'behaving strangely'
  1293.   when you try to FORMAT a fixed RAM disk. I've not been able to pin-point
  1294.   any problems whatsoever. Contains TAS instructions - use 'NO_TAS' to
  1295.   remove them.
  1296.  
  1297.  
  1298. ›1mGiga-BASIC [ABC elektronik]›0m
  1299.  
  1300. A lot of commands! - some useful, some superfluous. mostly concerned with
  1301. mouse and menu handling.
  1302.  
  1303.   ›3mIMPLEMENTATION NOTES›0m
  1304.  
  1305.   Problems with compiler?
  1306.  
  1307. --------------------------------------------------------------------------
  1308.  
  1309. ›1m›4mSOFTWARE OVERVIEW - LANGUAGES AND ASSEMBLERS›0m
  1310.  
  1311. ›1mQLiberator (BASIC compiler) [Liberation Software]›0m
  1312.  
  1313. This compiler has almost the same degree of usefulness as the T. Tebby
  1314. toolkit. The compiled programs are not among the fastest, but the compiler
  1315. can cope with nearly every program. It can include M-Code toolkits in the
  1316. object file, and produces small code when used in conjunction with the
  1317. resident runtime library. Compiled programs can be linked as resident
  1318. toolkits to the interpreter, and procedures can made accessible to BASIC.
  1319.  
  1320.   ›3mIMPLEMENTATION NOTES - 3.22 MJS›0m
  1321.  
  1322.   Use 'NO_TAS' to remove TAS instructions. Also use 'NO_TAS' on any
  1323.   runtime libraries and any programs compiled prior to 'fixing'. Programs
  1324.   compiled with a 'fixed' version of QLIBerator will not contain TAS
  1325.   instructions and will work perfectly well on a QL or within Amiga-QDOS.
  1326.  
  1327.  
  1328. ›1mTurbo (BASIC compiler) [Digital Precision]›0m
  1329.  
  1330. Much faster than the Qliberator, but can not pass parameters back to the
  1331. caller, and has many small quirks. Supercharge was a precursor to Turbo
  1332. with a very remarkable copy protection 'device'. Turbo itself is not
  1333. protected anymore.
  1334.  
  1335.   ›3mIMPLEMENTATION NOTES - 3.24 MJS›0m
  1336.  
  1337.   Use the program NO_TAS_task to remove TAS instructions in PARSER_task
  1338.   and CODEGEN_task. Once 'fixed' TURBO and TURBO compiled tasks will run
  1339.   on Amiga-QDOS without problems.
  1340.  
  1341.   If you wish to make use of the second screen under Amiga-QDOS (or
  1342.   Minerva) you must use SYS_REF to remove all references to the system
  1343.   variables (which are moved with 2nd screen enabled)
  1344.  
  1345.   When SYS_REFing CODEGEN_task of the TURBO compiler, patch all references
  1346.   EXCEPT the two that refer to $28010. These are not part of the CODEGEN
  1347.   code, but are included in all TURBO compiled programs.
  1348.  
  1349.   When SYS_REFing PARSER_task, or any other TURBO program replace ALL
  1350.   references.
  1351.  
  1352.   The SYS_REF'ed version of TURBO works under Minerva and Amiga-QDOS with
  1353.   the second screen enabled. It produces code identical to the unpatched
  1354.   version, so remember to patch all TURBO-compiled tasks!
  1355.  
  1356.   SYS_REF makes TURBO & TURBO-compiled programs 32-bit clean.
  1357.  
  1358. ›1mFORTRAN 77 and PASCAL [Prospero Software]›0m
  1359.  
  1360. These are the QDOS Versions of the widely used Prospero compilers. There
  1361. are few bugs (in my Version the Double Precision Arithmetic gives problems
  1362. when passed through Functions), and they give access to all QDOS
  1363. functions. They produce QDOS standard relocatable format and use the same
  1364. Linker that comes with the GST Macro assembler and the GST QC compiler.
  1365.  
  1366.   ›3mIMPLEMENTATION NOTES›0m
  1367.  
  1368.   Program copy protection is by means of an EPROM that contains  part of
  1369.   the runtime library. You can get round this by using the supplied PRL
  1370.   (Prospero Resident Library) from RAM, but you have to reload it after
  1371.   every pass of the compiler. The supplied compiler supervisor does not
  1372.   work on the Amiga?
  1373.  
  1374.  
  1375. ›1mComputer one PASCAL [Computer one]›0m
  1376.  
  1377. A generally useful PASCAL compiler with a kind of integrated environment.
  1378. The newer version can generate executable Jobs, but it is still a P-code
  1379. Pascal. String handling is not implemented.
  1380.  
  1381.   ›3mIMPLEMENTATION NOTES›0m
  1382.  
  1383.   This Compiler only works with less than 1MB RAM.
  1384.  
  1385.  
  1386. ›1mMetacomco PASCAL [Metacomco]›0m
  1387.  
  1388.   ›3mIMPLEMENTATION NOTES›0m
  1389.  
  1390.   Forget it !
  1391.  
  1392.  
  1393. ›1mLattice C [Metacomco]›0m
  1394.  
  1395. The only full scale C implementation for the QL. There are bugs and the
  1396. Floating-point arithmetic is terribly slow. It uses QDOS standard
  1397. relocatable format as opposed to Metacomco's own format. As with Lattice
  1398. standard #ASM is not allowed, you have to write machine code programs
  1399. separately.
  1400.  
  1401.   ›3mIMPLEMENTATION NOTES›0m
  1402.  
  1403.   Program copy protection consists of an 8K EPROM that occupies addresses
  1404.   $C000 - $FFFF, mirrored at $E000. Make a copy from a normal QL with
  1405.   SBYTES FLP1_QLC_ROM,48*1024,16*1024. This file can then be loaded on the
  1406.   Amiga at the same address. Use CTRL-ALT-SHIFT-TAB to re-boot and
  1407.   initialise the EPROM.
  1408.  
  1409.  
  1410. ›1mQC [GST]›0m
  1411.  
  1412. An integer C without STRUCTures and UNIONs. It contains some bugs but
  1413. allows the inclusion of machine code via #ASM. Consider it as an
  1414. interesting alternative to Assembler. Output can be assembled via GST's
  1415. macro assembler.
  1416.  
  1417.   ›3mIMPLEMENTATION NOTES›0m
  1418.  
  1419.   Not tested on Amiga-QDOS.
  1420.  
  1421.  
  1422. ›1mDigital C [Digital Precision]›0m
  1423.  
  1424. Integer C without STRUCTures, UNIONs and #ASM. restricted to 32 Kbyte
  1425. code. Derived from a Public Domain C for CP/M.
  1426.  
  1427.   ›3mIMPLEMENTATION NOTES›0m
  1428.  
  1429.   Not tested on Amiga-QDOS.
  1430.  
  1431.  
  1432. ›1mBCPL [Metacomco]›0m
  1433.  
  1434. BCPL is an ancestor of C, and was the first Compiler for QDOS.
  1435. Floating-point arithmetic is implemented via procedures, and is thus
  1436. difficult to use. The compiler uses Metacomcos own special linker.
  1437.  
  1438.   ›3mIMPLEMENTATION NOTES›0m
  1439.  
  1440.   Runs without problems on Amiga-QDOS.
  1441.  
  1442.  
  1443. ›1mLISP [Metacomco]›0m
  1444.  
  1445. A very special Version of LISP, seemingly unrelated to common LISP.
  1446. Graphics and QDOS facilities are implemented.
  1447.  
  1448.   ›3mIMPLEMENTATION NOTES›0m
  1449.  
  1450.   Runs without problems on Amiga-QDOS.
  1451.  
  1452.  
  1453. ›1mFORTH-83 [Computer one]›0m
  1454.  
  1455. Forth started life in pocket calculators and is the language that
  1456. POSTSCRIPT was based upon. Multitasking, graphics, floating point
  1457. arithmetics and QDOS access are all integrated.
  1458.  
  1459.   ›3mIMPLEMENTATION NOTES›0m
  1460.  
  1461.   Runs without problems on Amiga-QDOS.
  1462.  
  1463.  
  1464. ›1mFORTH [Digital Precision]›0m
  1465.  
  1466. Another Forth implementation.
  1467.  
  1468.   ›3mIMPLEMENTATION NOTES›0m
  1469.  
  1470.   Not tested on Amiga-QDOS.
  1471.  
  1472.  
  1473. ›1mGST Macro Assembler [GST]›0m
  1474.  
  1475. The professional Assembler for QDOS. Macro facilities far beyond the
  1476. standard. The assembler is small, fast, and produces standard QDOS
  1477. relocatable Format. Recently re-vamped by QUANTA programmers.
  1478.  
  1479.   ›3mIMPLEMENTATION NOTES - 3.22 MJS›0m
  1480.  
  1481.   Runs without problems on Amiga-QDOS.
  1482.  
  1483.  
  1484. ›1mMetacomco Assembler [Metacomco]›0m
  1485.  
  1486. Very big (3 overlays), very  slow, lots of bugs. Can be used to link
  1487. M-Code routines to other Metacomco programs, since the linker for all
  1488. Metacomco programs are compatible.
  1489.  
  1490.   ›3mIMPLEMENTATION NOTES›0m
  1491.  
  1492.   Not tested on Amiga-QDOS.
  1493.  
  1494.  
  1495. ›1mComputer one Assembler [Computer one]›0m
  1496.  
  1497. Fast, small, no Macros, no linker.
  1498.  
  1499.   ›3mIMPLEMENTATION NOTES›0m
  1500.  
  1501.   Not tested on Amiga-QDOS.
  1502.  
  1503.  
  1504. ›1mGenQL [HiSoft]›0m
  1505.  
  1506. Together with the MonQL monitor, and a special editor it provides an
  1507. integrated environment. A useful Program.
  1508.  
  1509.   ›3mIMPLEMENTATION NOTES›0m
  1510.  
  1511.   Works fine on Amiga-QDOS.
  1512.  
  1513.  
  1514. ›1mAssembler Workbench [Eddy Yeung]›0m
  1515.  
  1516. Another integrated environment for assembler programmers. It provides
  1517. on-line Help and an in-line assembler.
  1518.  
  1519.   ›3mIMPLEMENTATION NOTES›0m
  1520.  
  1521.   Protected against copying, and available only on Microdrive cartridges.
  1522.   The cracked Version runs on Amiga-QDOS.
  1523.  
  1524.  
  1525. ›1mQMON monitor [Qjump]›0m
  1526.  
  1527. A nice M-Code monitor also available as ROM. It is a good tool to have at
  1528. hand.
  1529.  
  1530.   ›3mIMPLEMENTATION NOTES - 3.22 MJS›0m
  1531.  
  1532.   Works without problems on Amiga-QDOS
  1533.  
  1534.  
  1535. ›1mMonQL monitor [HiSoft]›0m
  1536.  
  1537. A generally useful monitor/debugger with a corresponding assembler
  1538. (GenQL).
  1539.  
  1540.   ›3mIMPLEMENTATION NOTES›0m
  1541.  
  1542.   Cannot cope with addresses longer than 20 bits, so you can only debug
  1543.   programs in CHIP memory. Perhaps some day HiSoft will make a new Version
  1544.   for Atari/Amiga/Thor2 users. We will be grateful.
  1545.  
  1546. --------------------------------------------------------------------------
  1547.  
  1548. ›1m›4mSOFTWARE OVERVIEW - EMULATORS›0m
  1549.  
  1550. ›1mSolution (MS-DOS emulator) [Digital Precision]›0m
  1551.  
  1552. Slow, but CGA graphics is included and it is said to be faster than the
  1553. Amiga Transformer.
  1554.  
  1555.   ›3mIMPLEMENTATION NOTES›0m
  1556.  
  1557.   Not Tested on Amiga-QDOS.
  1558.  
  1559.  
  1560. ›1mCPMulator (CP/M emulator)›0m
  1561.  
  1562. An 0.5 MHz Z80 with a few bugs.
  1563.  
  1564.   ›3mIMPLEMENTATION NOTES - 3.22 MJS›0m
  1565.  
  1566.   Tested briefly on Amiga-QDOS and worked OK.
  1567.  
  1568. --------------------------------------------------------------------------
  1569.  
  1570. ›1m›4mSOFTWARE OVERVIEW - UTILITIES›0m
  1571.  
  1572. ›1mSuper Media Manager [Digital Precision]›0m
  1573.  
  1574.   Compiled SuperBASIC. Contains a useful description of how QDOS handles
  1575.   Disks.
  1576.  
  1577. --------------------------------------------------------------------------
  1578.  
  1579. ›1m›4mSOFTWARE OVERVIEW - EDITORS, WORDPROCESSORS, AND GRAPHICS›0m
  1580.  
  1581. ›1mEDITOR [Eddy Yeung] [Qjump]›0m
  1582.  
  1583. This editor comes together with the Assembler Workbench. It is related in
  1584. most functions to the well known (at least to Amiga users) Metacomco ED,
  1585. but is much faster. Macros are not provided. It is my favourite Editor.
  1586.  
  1587.   ›3mIMPLEMENTATION NOTES›0m
  1588.  
  1589.   Runs without problems on Amiga-QDOS.
  1590.  
  1591.  
  1592. ›1mED [Metacomco]›0m
  1593.  
  1594. You should know it from the Amiga.
  1595.  
  1596.   ›3mIMPLEMENTATION NOTES - 3.22 MJS›0m
  1597.  
  1598.   Runs on Amiga-QDOS without problems.
  1599.  
  1600.  
  1601. ›1mC1Edit [Computer one]›0m
  1602.  
  1603. The editor supplied with all Computer one programs. It is menu driven, but
  1604. not very advanced.
  1605.  
  1606.   ›3mIMPLEMENTATION NOTES›0m
  1607.  
  1608.   Runs without problems on Amiga-QDOS.
  1609.  
  1610.  
  1611. ›1mEDIT [Digital Precision]›0m
  1612.  
  1613. Very advanced editor, including a lot of macro features. Compiled
  1614. SuperBASIC and very big.
  1615.  
  1616.   ›3mIMPLEMENTATION NOTES›0m
  1617.  
  1618.   Not tested on Amiga-QDOS.
  1619.  
  1620.  
  1621. ›1mQuill [Psion]›0m
  1622.  
  1623. The original wordprocessor that was bundled with the QL. Handles
  1624. formatting well, supports bold, italic underline etc., and can create text
  1625. only files via print-to-file option.
  1626.  
  1627.   ›3mIMPLEMENTATION NOTES - 3.22 MJS›0m
  1628.  
  1629.   Works well on Amiga-QDOS.
  1630.  
  1631.  
  1632. ›1mArchive [Psion]›0m
  1633.  
  1634. The original Data Base that was bundled with the QL. Although not very
  1635. advanced, and though it doesn't handle pictures or sound, it is still
  1636. sufficient for most applications. (This is the kind of Data Base, that
  1637. makes use of a special Language that looks a little bit like BASIC)
  1638.  
  1639.   ›3mIMPLEMENTATION NOTES - 3.22 MJS›0m
  1640.  
  1641.   Runs on Amiga-QDOS without problems.
  1642.  
  1643.  
  1644. ›1mEasel [Psion]›0m
  1645.  
  1646. The original Business Graphic program that was bundled with the QL. You
  1647. may find better programs on the IBM (for example Boing graph), but it is
  1648. still state of the art.
  1649.  
  1650.   ›3mIMPLEMENTATION NOTES - 3.22 MJS›0m
  1651.  
  1652.   Runs on Amiga-QDOS without problems.
  1653.  
  1654.  
  1655. ›1mAbacus [Psion]›0m
  1656.  
  1657. The original Spreadsheet that was bundled with the QL. It cannot handle
  1658. graphics, but is still state of the art.
  1659.  
  1660.   ›3mIMPLEMENTATION NOTES - 3.22 MJS›0m
  1661.  
  1662.   Runs on Amiga-QDOS without problems.
  1663.  
  1664.  
  1665. ›1mXchange [Psion]›0m
  1666.  
  1667. The combined Quill/Easel/Abacus/Archive program, able to multitask, and
  1668. including a 'Task Sequence Language' that allows you to write macros for
  1669. all 4 programs.
  1670.  
  1671.   ›3mIMPLEMENTATION NOTES - 3.22 MJS›0m
  1672.  
  1673.   You need memory expansion to use this program. Runs on Amiga-QDOS
  1674.   without problems.
  1675.  
  1676.  
  1677. ›1mText 87›0m
  1678.  
  1679. An advanced Word processor for QDOS supporting proportional type and
  1680. varying fonts and type sizes.
  1681.  
  1682.   ›3mIMPLEMENTATION NOTES›0m
  1683.  
  1684.   Newer versions run without problems on Amiga-QDOS, though older
  1685.   Versions may cause trouble since they cause a divide by zero error that
  1686.   is now trapped by QDOS.
  1687.  
  1688.  
  1689. ›1mGraphiQL [Talent]›0m
  1690.  
  1691. A picture drawing program for low resolution mode.
  1692.  
  1693.   ›3mIMPLEMENTATION NOTES›0m
  1694.  
  1695.   Protected against piracy. The cracked Version runs on Amiga-QDOS
  1696.  
  1697.  
  1698. ›1mTechniQL [Talent]›0m
  1699.  
  1700. Another drawing program but for high resolution mode. It has interesting
  1701. features, including a plotter driver, and may well be worth using.
  1702.  
  1703.   ›3mIMPLEMENTATION NOTES›0m
  1704.  
  1705.   The cracked Version runs on Amiga-QDOS but with problems.
  1706.  
  1707.  
  1708. ›1mQL Art›0m
  1709.  
  1710. A nice picture drawing program.
  1711.  
  1712.   ›3mIMPLEMENTATION NOTES›0m
  1713.  
  1714.   Is copy-protected and will not run on Amiga-QDOS.
  1715.  
  1716.  
  1717. ›1mMPaint [Medic Datasystems]›0m
  1718.  
  1719. The first picture drawing program for the QL that supported the mouse. It
  1720. is a Basic program with some M-code extensions.
  1721.  
  1722.   ›3mIMPLEMENTATION NOTES›0m
  1723.  
  1724.   The cracked and compiled Version runs on Amiga-QDOS, but with problems
  1725.  
  1726. --------------------------------------------------------------------------
  1727.  
  1728. ›1m›4mSOFTWARE OVERVIEW - GAMES›0m
  1729.  
  1730. Games are mostly protected against copying and many are only available on
  1731. Microdrive cartridges.
  1732.  
  1733. ›1mChess [Psion]›0m
  1734.  
  1735. Really good, a classic.
  1736.  
  1737.   ›3mIMPLEMENTATION NOTES›0m
  1738.  
  1739.   It will probably never run on the Amiga since it contains TAS
  1740.   instructions and attempts to change the contents of the operating
  1741.   system ROM, which is now RAM?
  1742.  
  1743.  
  1744. ›1mMatch (Tennis) [Psion]›0m
  1745.  
  1746. Another classic.
  1747.  
  1748.   ›3mIMPLEMENTATION NOTES›0m
  1749.  
  1750.   It works on the Amiga, but is too fast to play, since the QL had only
  1751.   1/4 of the Speed.
  1752.  
  1753.  
  1754. ›1mQL Cavern [JMF]›0m
  1755.  
  1756. Graphic adventure (not comparable of course to Amiga games)
  1757.  
  1758.   ›3mIMPLEMENTATION NOTES›0m
  1759.  
  1760.   Not too bad, runs on the Amiga with modifications (Interrupts must be
  1761.   enabled!)
  1762.  
  1763. --------------------------------------------------------------------------
  1764.  
  1765. ›1m›4mBIBLIOGRAPHY›0m
  1766.  
  1767. A list of books/publications that proved useful:
  1768.  
  1769. ›1mQL BOOKS›0m
  1770.  
  1771. QL Assembly Language Programming by Colin Opie
  1772.  McGraw-Hill Book Company ISBN 0-07-084777-0
  1773.  
  1774. The Sinclair QDOS Companion by Andrew Pennell
  1775.  Sunshine Books ISBN 0-946408-69-9
  1776.  
  1777. Assembly Language Programming on the Sinclair QL by Andrew Pennell
  1778.  Sunshine Books ISBN 0-946408-42-4
  1779.  
  1780. QL SuperBASIC The Definitive Handbook by Jan Jones
  1781.  First published by McGraw-Hill ISBN 0-07-084784-3
  1782.  Limited reprint by QUANTA: The Independent QL User Group.
  1783.  
  1784. ›1mAMIGA BOOKS›0m
  1785.  
  1786. Amiga System Programmer's Guide by Dittrich, Gelfand & Schemmel
  1787.  Abacus/Data Becker ISBN 1-55755-034-4
  1788.  
  1789. Amiga Hardware Reference Manual,
  1790. Amiga Intuition Reference Manual,
  1791. Amiga ROM Kernel Reference Manual: Exec,
  1792. Amiga ROM Kernel Reference Manual: Libraries and Devices
  1793.  Addison-Wesley Publishing Company Inc.
  1794.  
  1795. The 'Kickstart' Guide to the Amiga
  1796.  Ariadne Software Ltd. ISBN 0 9512921 0 2
  1797.  
  1798. ›1m680X0 BOOKS›0m
  1799.  
  1800. 680X0 Programming by example by Stan Kelly-Bootle
  1801.  Howard W Sams & Company ISBN 0-672-22544-1
  1802.  
  1803. MicroComputer Architecture and programming by John F Wakerly
  1804.  John Wiley & Sons Inc. ISBN 0-471-50021-6
  1805.  
  1806. ›1mPUBLICATIONS›0m
  1807.  
  1808. QL World Magazine
  1809.  (Alas, mo longer in print).
  1810.  
  1811. QREVIEW - news, reviews and articles for QL compatibles
  1812.  (incorporated into IQLR, but...)
  1813.  
  1814. IQLR - International QL Report
  1815.  (...no longer around)
  1816.  
  1817. QUANTA - newsletter (by membership).
  1818.  QUANTA: The independant QL users group.
  1819.  Membership: Bill Newell, QUANTA (UK),
  1820.  213 Manor Rd, Benfleet, Essex, SS7 4JD
  1821.  
  1822. QLtoday - magazine for QL, QDOS, Sinclair Computers, SMSQ etc...
  1823.  (bi-monthly, by subscription)
  1824.  English Office:        German Office:
  1825.  Miracle Systems Ltd.,        Jochen Merz Software
  1826.  20 Mow Barton            Im stillen Winkel 12
  1827.  Yate, Bristol            47169 Duisburg
  1828.  United Kingdom BS17 5NF    Germany
  1829.  Tel: +44 1248 354023        Tel: +49 203 502011
  1830.  
  1831. --------------------------------------------------------------------------
  1832.